ServerVariables 對路徑的操作
作者:tank 日期:2004-12-11
ServerVariables 對路徑的操作
前些天發了好些帖子,想詢問關於路徑的問題,可也一直都沒有回復。其實我對路徑的概念一直都比較含糊,後來還是同時介紹了ServerVariables數據集合,才使我解決了那個困惑我很久的問題。把這篇文章轉載過來,一方面看能不能有助於那些和我有過共同感受的朋友,同時也希望各位前輩能多給些意見。
ServerVariables
ServerVariables 集合檢索預定的環境變量。
語法
Request.ServerVariables (server environment variable)
參數
服務器環境變量
指定要檢索的服務器環境變量名。可以使用下面列出的值。變量 說明
ALL_HTTP 客戶端發送的所有 HTTP 標題文件。
ALL_RAW 檢索未處理表格中所有的標題。ALL_RAW 和 ALL_HTTP 不同,ALL_HTTP 在標題文件名前面放置 HTTP_ prefix,並且標題名稱總是大寫的。使用 ALL_RAW 時,標題名稱和值只在客戶端發送時才出現。
APPL_MD_PATH 檢索 ISAPI DLL 的 (WAM) Application 的元數據庫路徑。
APPL_PHYSICAL_PATH 檢索與元數據庫路徑相應的物理路徑。IIS 通過將 APPL_MD_PATH 轉換為物理(目錄)路徑以返回值。
AUTH_PASSWORD 該值輸入到客戶端的鑒定對話中。只有使用基本鑒定時,該變量才可用。
AUTH_TYPE 這是用戶訪問受保護的腳本時,服務器用於檢驗用戶的驗證方法。
AUTH_USER 未被鑒定的用戶名。
CERT_COOKIE 客戶端驗證的唯一 ID,以字符串方式返回。可作為整個客戶端驗證的簽字。
CERT_FLAGS 如有客戶端驗證,則 bit0 為 1。
如果客戶端驗證的驗證人無效(不在服務器承認的 CA 列表中),bit1 被設置為 1。
CERT_ISSUER 用戶驗證中的頒布者字段(O=MS,OU=IAS,CN=user name,C=USA)。
CERT_KEYSIZE 安全套接字層連接關鍵字的位數,如 128。
CERT_SECRETKEYSIZE 服務器驗證私人關鍵字的位數。如 1024。
CERT_SERIALNUMBER 用戶驗證的序列號字段。
CERT_SERVER_ISSUER 服務器驗證的頒發者字段。
CERT_SERVER_SUBJECT 服務器驗證的主字段。
CERT_SUBJECT 客戶端驗證的主字段。
CONTENT_LENGTH 客戶端發出內容的長度。
CONTENT_TYPE 內容的數據類型。同附加信息的查詢一起使用,如 HTTP 查詢 GET、 POST 和 PUT。
GATEWAY_INTERFACE 服務器使用的 CGI 規格的修訂。格式為 CGI/revision。
HTTP_<HeaderName> HeaderName 存儲在標題文件中的值。未列入該表的標題文件必須以 HTTP_ 作為前綴,以使 ServerVariables 集合檢索其值。
注意 服務器將 HeaderName 中的下劃線(_)解釋為實際標題中的破折號。例如,如果您指定 HTTP_MY_HEADER,服務器將搜索以 MY-HEADER 為名發送的標題文件。
HTTPS 如果請求穿過安全通道(SSL),則返回 ON。如果請求來自非安全通道,則返回 OFF。
HTTPS_KEYSIZE 安全套接字層連接關鍵字的位數,如 128。
HTTPS_SECRETKEYSIZE 服務器驗證私人關鍵字的位數。如 1024。
HTTPS_SERVER_ISSUER 服務器驗證的頒發者字段。
HTTPS_SERVER_SUBJECT 服務器驗證的主字段。
INSTANCE_ID 文本格式 IIS 實例的 ID。如果實例 ID 為 1,則以字符形式出現。使用該變量可以檢索請求所屬的(元數據庫中)Web 服務器實例的 ID。
INSTANCE_META_PATH 響應請求的 IIS 實例的元數據庫路徑。
LOCAL_ADDR 返回接受請求的服務器地址。如果在綁定多個 IP 地址的多宿主機器上查找請求所使用的地址時,這條變量非常重要。
LOGON_USER 用戶登錄 Windows NT® 的帳號。
PATH_INFO 客戶端提供的額外路徑信息。可以使用這些虛擬路徑和 PATH_INFO 服務器變量訪問腳本。如果該信息來自 URL,在到達 CGI 腳本前就已經由服務器解碼了。
PATH_TRANSLATED PATH_INFO 轉換後的版本,該變量獲取路徑並進行必要的由虛擬至物理的映射。
QUERY_STRING 查詢 HTTP 請求中問號(?)後的信息。
REMOTE_ADDR 發出請求的遠程主機的 IP 地址。
REMOTE_HOST 發出請求的主機名稱。如果服務器無此信息,它將設置為空的 MOTE_ADDR 變量。
REMOTE_USER 用戶發送的未映射的用戶名字符串。該名稱是用戶實際發送的名稱,與服務器上驗證過濾器修改過後的名稱相對。
REQUEST_METHOD 該方法用於提出請求。相當於用於 HTTP 的 GET、HEAD、POST 等等。
SCRIPT_NAME 執行腳本的虛擬路徑。用於自引用的 URL。
SERVER_NAME 出現在自引用 UAL 中的服務器主機名、DNS 化名或 IP 地址。
SERVER_PORT 發送請求的端口號。
SERVER_PORT_SECURE 包含 0 或 1 的字符串。如果安全端口處理了請求,則為 1,否則為 0。
SERVER_PROTOCOL 請求信息協議的名稱和修訂。格式為 protocol/revision 。
SERVER_SOFTWARE 應答請求並運行網關的服務器軟件的名稱和版本。格式為 name/version 。
URL 提供 URL 的基本部分。
註釋
如果客戶端發送的標題文件在上述表格中找不到,可以在調用 Request.ServerVariables 中給標題文件名加上 HTTP_ 的前綴以檢索其值。例如,如果客戶端發送標題文件
SomeNewHeader:SomeNewValue
您可以通過使用下面的語法檢索 SomeNewValue
<% Request.ServerVariables("HTTP_SomeNewHeader") %>
您可使用重述符以循環遍歷所有的服務器變量名。例如,使用下面的腳本打印出所有的服務器名。
<TABLE>
<TR><TD><B>Server Variable</B></TD><TD><B>Value</B></TD></TR>
<% For Each name In Request.ServerVariables %>
<TR><TD> <%= name %> </TD><TD> <%= Request.ServerVariables(name) %> </TD></TR>
</TABLE>
<% Next %>
示例
下面的例子使用 Request 對像顯示一些服務器變量。
<HTML>
<!-- This example displays the content of several ServerVariables. -->
ALL_HTTP server variable =
<%= Request.ServerVariables("ALL_HTTP") %> <BR>
CONTENT_LENGTH server variable =
<%= Request.ServerVariables("CONTENT_LENGTH") %> <BR>
CONTENT_TYPE server variable =
<%= Request.ServerVariables("CONTENT_TYPE") %> <BR>
QUERY_STRING server variable =
<%= Request.ServerVariables("QUERY_STRING") %> <BR>
SERVER_SOFTWARE server variable =
<%= Request.ServerVariables("SERVER_SOFTWARE") %> <BR>
</HTML>
下一個示例使用 ServerVariables 集合將服務器名插入一個超文本鏈接。
<A HREF = "http://<%= Request.ServerVariables("SERVER_NAME") %>
/scripts/MyPage.asp">Link to MyPage.asp</A>